package cn.ssj.service;

import org.springframework.data.domain.Page;

import java.io.Serializable;
import java.util.List;

/**
 * Created by Administrator on 2017/9/1 0001.
 */
public interface BaseService<T,ID extends Serializable>{
    /**
     * 插入实体
     * @param entity 实体
     * @return 插入成功，返回实体，否则返回null
     */
    public T insert(T entity);

    /**
     * 更新实体
     * @param entity 实体
     * @return 更新成功返回更新后的实体，否则返回null
     */
    public T update(T entity);

    /**
     * 根据id删除实体
     * @param id  id
     * @return  删除成功返回true，否则返回false
     */
    public boolean delete(ID id);

    /**
     * 根据id查询实体
     * @param id  实体
     * @return 查询成功返回实体，否则返回
     */
    public T queryOne(ID id);

    /**
     * 查询所有实体记录
     * @return 查询成功返回实体集合，否则返回null
     */
    public List<T> queryAll();

    /**
     * 分页查询实体记录
     * @param page  页码
     * @param length 查询条数
     * @return 查询成功返回分页对象，否则返回null
     */
    public Page<T> queryByPage(Integer page, Integer length);

    /**
     * 根据实体使用标记进行查询useFlag
     * @param useFlag 使用标记
     * @return
     */
    public List<T> queryByUseFlag(String useFlag);
}
